package pc30_1;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

import pc30.model.SungJuk2VO;

public class J19ArratList {
public static void main(String[] args){
	//ArrayList
	//실무에서 빈번하게 사용되는 컬렉션 객체 중 하나 배열과 달리 입력하는 데이터 갯수에 따라
	//크기가 유동적으로 변함
	//동일한 값을 여러개 저장할 수 있고, 입력되는 값들은 순서를 가짐
	
	//선언 및 정의
	ArrayList<String>woman=new ArrayList<>();
	ArrayList<SungJuk2VO>sj=new ArrayList<>();
	
	//추가하기 Add
	woman.add("태희");
	woman.add("혜교");
	woman.add("지현");
	sj.add(new SungJuk2VO("태희", 99, 97, 88));
	sj.add(new SungJuk2VO("혜교", 55, 66, 44));
	sj.add(new SungJuk2VO("지현", 87, 45, 32));
	
	//하나씩 조회 get(위치)
	System.out.println(woman.get(0));
	System.out.println(woman.get(1));
	System.out.println(woman.get(2));
	
	//SungJuk2VO의 toString()에 의해 출력
	System.out.println(sj.get(0));
	System.out.println(sj.get(1));
	System.out.println(sj.get(2));
	
	System.out.println(sj.get(0).getName());
	System.out.println(sj.get(1).getName());
	System.out.println(sj.get(2).getName());
	
	//몽땅 출력 (for=each문 사용)
	//Arraylist<a>=new ArrayList<>();
	//for(a???:b){}
	//for( 요소유형 요소명:arraylis객체명 )
	for(String str:woman){
		System.out.println(str);
	}
	for(SungJuk2VO s:sj){
		System.out.println(s);
	}
	//수정하기 set(위치,값)
	System.out.println(woman.get(1));
	woman.set(1,"수지");
	System.out.println(woman.get(1));
	
	SungJuk2VO newOne =new SungJuk2VO("수정", 78,32,45);
	System.out.println(sj.get(2));
	sj.set(2, newOne);
	System.out.println(sj.get(2));
	
	//삭제 remove(위치)
	woman.remove(1);
	sj.remove(2);
	for(String str:woman){
		System.out.println(str);
	}
	for(SungJuk2VO s:sj){
		System.out.println(s);
	}
	
	//포함여부 확인 contains
	String key="지현";
	if(woman.contains(key)){
		System.out.println("데이터가 존재합니다.");
		System.out.println(woman.indexOf(key));
	}else{
		System.out.println("데이터가 없어요!");
	}
	key="수지";
	for(SungJuk2VO s:sj){
	if(s.getName().contains(key)){
		System.out.println("찾았어요!");
		System.out.println(sj.indexOf(key));
	}else{
		System.out.println("못 찾았어요!");
	}
	//정렬 sort
	Collections.sort(woman);
	for(String str:woman){
		System.out.println(str);
	}
	//객체를 대상으로 정렬하려면 Comparator라는 인터페이스를 구현하고
	//Collections.sort(대상,정렬기준);
	//으로 호출해서 사용해야 함
	Collections.sort(sj,new NameSort());
	for(SungJuk2VO s:sj){
		System.out.println(s);
	}
	
	//모두 삭제 clear
	woman.clear();
	sj.clear();
	for(String str:woman){
		System.out.println(str);
		
	}
	
	
}
}
class NameSort implements Comparator<SungJuk2VO>{

	@Override
	public int compare(SungJuk2VO sj1, SungJuk2VO sj2) {
		
		return sj1.getName().compareTo(sj2.getName());
	}
	
}
}



















